/**
 * @param {number[][]} matrix
 * @param {number} target
 * @return {boolean}
 */
var searchMatrix = function(matrix, target) {
    var w=matrix[0].length-1;
    function biSearch(source,l,r,t){
        if(l>r) return false;
        let m=parseInt((l+r)/2);
        console.log(m);
        if(source[m]==t){
            return true;
        }
        else if(source[m]>t){
            return biSearch(source,l,m-1,t)
        }
        else{
            return biSearch(source,m+1,r,t)
        }
    }
    for(let row of matrix){
        if(row[0]==target||row[w]==target){
            return true
        }
        else if(target>row[0]&&target<row[w]){
            return biSearch(row,0,w,target)
        }
    }
};

console.log(searchMatrix([[-8,-7,-5,-3,-3,-1,1],[2,2,2,3,3,5,7],[8,9,11,11,13,15,17],[18,18,18,20,20,20,21],[23,24,26,26,26,27,27],[28,29,29,30,32,32,34]],-5))
/*
执行用时：
88 ms
, 在所有 JavaScript 提交中击败了
48.11%
的用户
内存消耗：
38.9 MB
, 在所有 JavaScript 提交中击败了
59.32%
的用户


*/